1. Field of Invention
The present invention relates generally to the field of content and/or data delivery over a network. More particularly, the present invention is in one aspect related to apparatus and methods for deploying multiple versions and different types of software over such a network.
2. Description of Related Technology
In the cable television industry, an object carousel is a device that continuously broadcasts the software intended to be run on consumer premises equipment (e.g., set-top boxes). This software can include for example digital navigators, video on demand (VOD) applications, digital video recorder applications, middleware, operating systems, or other applications including software created by third parties. Under a typical broadcast network architecture, if a set-top box misses some of the data or receives defective data after a single broadcast from the server, the set-top box waits for the next broadcast of the data to receive any data that it still requires. Eventually, after a number of repeated broadcasts by the server, the set-top box receives the entirety of the software application being broadcast in an uncorrupted form.
Over time, however, software applications can become outdated. Modifications to an application become necessary to interface with new components, to add new features, to fix reported issues, to comply with industry standards, and for a variety of other reasons. Software developers create a new version of the application to address these concerns or changes.
Ideally, once a new version of an application is created, it should be adequately tested before being transmitted to the subscriber base via, e.g., an object carousel. It is thus the usual practice of the cable industry to refrain from deploying a new version of an application without first validating its operation, e.g., by installing and testing it on one or more test platforms at an RF plant. This approach prevents the unintentional deployment of defective software to cable subscribers on a broad scale, improving the quality of service and preventing costly telephone service calls.
Moreover, it may sometimes be desired to “test market” or otherwise evaluate software within a focus or other limited group to determine the commercial or operational desirability of the software before a broad deployment is made. For example, the software may be completely beta-tested and functional, but the MSO or other network operator may wish to evaluate subscriber reaction or ratings on new features or capabilities provided by the software, new user interface layouts, and so forth.
A variety of different approaches to software download or upgrade within a network are evidenced in the prior art. For example, U.S. Pat. No. 6,266,810 to Tanaka, et al. issued Jul. 24, 2001 entitled “Remote program downloading system and apparatus” discloses a system and apparatus for remote program downloading characterized by downloading a download process program exclusively used for a downloading process in a region indifferent to download process by using control software at the terminal, downloading the download process program portion of the control software to be updated by using this exclusive download process program, and finally, by using this download process program, downloading a program other than the download process program portion of the control software to be updated.
U.S. Pat. No. 6,393,585 to Houha, et al. issued May 21, 2002 entitled “Method and apparatus for restoring operating systems in a set-top box environment” discloses a computer-implemented method and apparatus for restoring operating systems within a set-top box system. The restoration provides for operating a first operating system in a first memory. An application program is operated in a second memory. The first operating system is stored in a second memory so that a second operating system is loaded into the first memory. When a predetermined condition which is associated with the second operating system is detected, the first operating system is loaded into the first memory in response to the detected predetermined condition. Such a system provides the ability to recover from errors or anomalies associated with downloading an operating system.
U.S. Pat. No. 6,427,238 to Goodman, et al. issued Jul. 30, 2002 entitled “Module manager for interactive television system” discloses a system and method implemented in an interactive television system for managing modules of interactive television applications. The system transmits modules from a broadcast station to a plurality of receiving stations through various paths, such as broadcast channels and modem channels. The receiving stations have module managers which store module requests and which monitor the various channels for modules corresponding to the requests. When modules are transmitted on the monitored channels, they are matched with the corresponding stored requests. If a module matches one of the requests, or if is an auto-loading module, it is stored in the receiving station. If a module has not been requested and is not an auto-loading module, it is ignored. The stored modules are added to a list of modules available for execution or for use by an executing application, and the corresponding requests are deleted.
U.S. Pat. No. 6,487,723 to MacInnis issued Nov. 26, 2002 entitled “Multicast downloading of software and data modules and their compatibility requirements” discloses a system for downloading different versions of software or data modules into a plurality of terminals having different compatibility interfaces includes an authoring component for generating the different module versions, a downloading source including a descriptor table which associates each module version with a list of compatibility requirements needed to download the module, and a plurality of terminals coupled to the downloading source. The downloading source transmits the descriptor table to each terminal and also continuously transmits the modules over the network. Each terminal extracts the descriptor table and, based on a match between an entry in the descriptor table and an internally stored table, determines which version of a particular module should be downloaded. The system avoids the need for two-way communication between each terminal and the downloading source.
U.S. Pat. No. 6,687,735 to Logston, et al. issued Feb. 3, 2004 entitled “Method and apparatus for balancing distributed applications” discloses a method and apparatus for balancing distributed applications within a client/server network, such as a cable television network, In one aspect of the invention, a method of balancing the load of distributed application client portions (DACPs) across various server portions (DASPs) and server machines is disclosed. In another aspect of the invention, an object-oriented distributed application software architecture employing both vertical and horizontal partitions and “mutable” (i.e., transportable) objects is disclosed. The mutable objects may reside on either the server or client portions of the distributed application while maintaining at least one network partition. A runtime environment adapted for the operation of the foregoing object-oriented distributed application, including an efficient message protocol useful for interprocess communication, is also disclosed. Methods for downloading the DACP from the servers, and scaling the DACP at download based on client device configuration, are further disclosed.
U.S. Pat. No. 6,718,374 Del Sordo, et al. issued Apr. 6, 2004 entitled “Method and system for identifying and downloading appropriate software or firmware specific to a particular model of set-top box in a cable television system” discloses a method and system identify programming code that is appropriate to the architecture and capabilities of a set-top terminal in a cable television system. The appropriate programming code is identified from among a variety of code objects being broadcast from the headend facility of the cable television system. A platform identifier stored in the set-top terminal is matched to a corresponding platform identifier in an entitlement management message or other download locator message that specifies where in the transport stream from the headend a particular code object can be acquired. By acquiring the object corresponding to the message bearing a matching platform identifier, the set-top terminal acquires programming code compatible with its attributes. Additionally, the cable television system can then optimally support a varied population of set-top terminals.
U.S. Pat. No. 6,813,778 to Poli, et al. issued Nov. 2, 2004 entitled “Method and system for downloading and managing the enablement of a list of code objects” discloses a method and system that manages and controls the download of programming, i.e., code objects, to a set-top terminal connected to a cable television system so as to prevent disruptions to service that may arise if only some of the objects specified are successfully downloaded and might, therefore, function improperly or conflict with existing applications. When the message to download new or additional code objects lists two or more objects to be acquired, the set-top terminal will only enable and execute downloaded objects if all the listed objects are successfully acquired. If only some of the objects the terminal has been instructed to download are acquired, those downloaded objects may either be purged or stored in memory without being enabled and executed. The system operator may specify in the message instructing the terminal to acquire new objects, whether the listed objects must be implemented as a group or not at all. The system operator may similarly specify if objects from an incomplete download are to be purged from memory.
U.S. Pat. No. 7,069,578 to Prus, et al. issued Jun. 27, 2006 entitled “Settop cable television control device and method including bootloader software and code version table for maintaining and updating settop receiver operating system software” discloses a cable television settop receiver and method that includes a software component and a frequency acquisition method for determining the ability of the operating system/control program in the settop receiver to operate the settop receiver. The software component, referred to as a “bootloader”, executes on the processor contained in the settop receiver and determines the capability and version of the settop receiver operating system/control program. If the bootloader determines that the operating system/control program should be updated, the bootloader initiates a download sequence, the performance of which allows the proper operating system/control program to be downloaded to the settop receiver. The download occurs after receipt, by the settop receiver, of a code version table (CVT). The CVT includes information that the settop receiver uses to determine which frequency to tune to receive the replacement operating system/control program. In accordance with another aspect of the invention, the bootloader initiates a frequency hunt sequence to determine the proper frequency to which to tune to receive the CVT. The frequency hunt sequence covers the entire spectrum of possible frequencies over which to receive the CVT.
United States Patent Publication No. 20020104097 to Jerding, et al. published Aug. 1, 2002 entitled “System and method for a communication terminal to manage memory and maintain a current application version for multiple applications” discloses a system and method for a communication terminal to manage memory and maintain a current application version for multiple applications. The system and method provide for managing memory in a communication terminal coupled to a server device enabling the communication terminal to provide memory capacity for storing in a memory and executing on the communication terminal a plurality of applications downloaded from the server device. Prior to downloading an application, the communication terminal determines an amount of memory capacity required by an application client to be downloaded from the server device. The communication terminal then attempts to allocate the memory capacity. If memory cannot be allocated from the system heap, the communication terminal purges data contained in the memory according to a dynamic list of priorities to create memory capacity in the memory for the application client. Once sufficient memory capacity has been created, it is allocated to the application client, and the application client is downloaded to the communication terminal.
United States Patent Publication No. 20020116706 to Bahraini published Aug. 22, 2002 entitled “Selection between an in-band and an out-of-band channel for downloading code to a set top box” discloses a cable communication system that makes use of a download control message to indicate whether a code object should be downloaded to a set top box via an in-band channel or via an out-of-band channel. In one version, the system includes means for adaptively determining whether to use an in-band channel or an out-of-band channel. The related method includes the steps of receiving a message designating whether to tune to an in-band or an out-of-band channel in order to receive the code object, tuning to the designated channel, and receiving the code object from the designated channel.
The Scientific Atlanta Broadcast File System (BFS), described in inter alia, Scientific Atlanta Publication No. 716392 entitled “Digital Broadband Delivery System (DBDS) APIs”, Rev. 001 dated 1999, is a system for providing files to a broadcast delivery mechanism. The BFS Server function includes an API that allows applications to create, write, and delete files to broadcast carousels. The server API to the BFS performs four distinct functions: (i) registering the application server with the BFS server (an application server can register and cancel registration with the BFS server); (ii) create directories and files in the BFS directory structure (an application server can register file systems with the BFS); (iii) deliver files to the BFS server (provides a mechanism for delivering files from an application server to the BFS network, as well as copying files to the BFS server or linking the BFS server to the application server file system) and (iv) two-way messaging (provides the interface for a client device or process to request a file from a registered application server, and for the application server to service the request). A selective download mechanism is also used in conjunction with the BFS to upgrade proprietary aspects of client devices (e.g., set-top boxes).
Despite the foregoing variety of different approaches, there presently exists no effective means or method for an individual set-top box or other client device to selectively discover and download a specific version of a given software application from the object carousel or other such distribution mechanism. Such a feature would ideally enable, inter alia, one or more set-top boxes designated as test or evaluation platforms to dynamically discover and download the appropriate new version of the software for testing and/or evaluation purposes, while the remainder of set-top boxes maintain the prior version of the software until all such testing or evaluation has been completed, and the new version is ready for broad release.
There is also a need for a mechanism that designates certain applications to be transmitted only to certain consumer premises devices. Currently, for example, set-top boxes within a cable network receive whatever software is broadcast over the object carousel. A change in cable service elected by the subscriber often requires the MSO to provide a different set-top box pre-loaded with different software, and this necessitates a scheduled visit by a cable technician (or at very least delivery via another modality such as U.S. Mail or overnight courier). These visits or “mail outs” are often inconvenient for the cable subscriber, as he/she is required to allocate a portion of the day to be at home while the set-top box is replaced with another set-top box with different functionality, or alternatively a period of time to perform a self-install of the box received via mail, etc.
In the context of the cable industry, another salient requirement is that services be compliant with the OpenCable Application Platform (OCAP) or other relevant specifications. As is well known, the OCAP specification is a middleware software layer specification intended to enable the developers of interactive television services and applications to design products that will run successfully on any cable television system in North America, independent of set-top or television receiver hardware or operating system software choices. Thus, improvements to features that are designed to be OCAP-compliant ensure that such features operate on a wide variety of platforms, and are not purely limited to a single architecture or operating system.